Validate and update links (STF-557)#408
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates outdated and redirected URLs across documentation, configuration, and source files, and introduces a Lychee link checker configuration (lychee.toml) along with ignoring its cache file in .gitignore. Feedback on the new Lychee configuration suggests increasing max_redirects from 0 to 5 to prevent flaky CI builds from external redirects, and removing server error status codes (500..=599) from the accepted list to ensure permanently broken links are not ignored.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
|
||
| # Don't allow any redirects, so links that have moved are surfaced and updated | ||
| # to their canonical destination. | ||
| max_redirects = 0 |
There was a problem hiding this comment.
Using max_redirects = 0 will cause any redirect (including standard HTTP to HTTPS upgrades or minor path adjustments on external sites) to fail the CI build. While this is useful for identifying links to update to their canonical forms, enforcing it strictly in a blocking CI workflow can lead to flaky builds when external websites change their redirect behavior. Consider allowing a small number of redirects (e.g., max_redirects = 5) to prevent unrelated PRs from being blocked by external changes.
| max_redirects = 0 | |
| max_redirects = 5 |
There was a problem hiding this comment.
Intentionally keeping max_redirects = 0. Surfacing moved/redirecting links is the goal of this change (STF-557), and it matches the dev-site and blog-site lychee configs; redirects are resolved by updating the link to its canonical target.
— Claude (posted on Greg's behalf)
| # 429: Too Many Requests | ||
| # 500-599: Server errors (temporary issues shouldn't fail CI) | ||
| # 999: LinkedIn's custom status code | ||
| accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"] |
There was a problem hiding this comment.
Including "500..=599" in the accept list means that any link returning a server-side error (such as 500 Internal Server Error, 502 Bad Gateway, or 503 Service Unavailable) will be treated as a success. While this prevents transient server issues from failing the build, it also silences permanently broken links that fail with server errors. It is generally safer to remove 500..=599 from the accepted list and rely on Lychee's built-in retry mechanism or CI-level retries to handle temporary server issues.
| accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"] | |
| accept = ["100..=103", "200..=299", "403", "429", "999"] |
There was a problem hiding this comment.
Keeping 500..=599 in accept, matching the dev-site and blog-site configs — transient upstream 5xx shouldn't fail link-checking CI.
— Claude (posted on Greg's behalf)
e17fff2 to
6da90f0
Compare
9946e54 to
70cf80e
Compare
Adds a lychee configuration and a Links GitHub Actions workflow so that stale or redirecting links are caught automatically going forward. The checker runs on push, pull request, and weekly to catch external link rot. max_redirects is 0 so links that have moved are surfaced and can be updated to their canonical destination. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validated all links with lychee and updated those that were out of date or redirected elsewhere: - dev.maxmind.com doc URLs now use canonical trailing-slash form - geoip2.readthedocs.org -> geoip2.readthedocs.io/en/latest/ - www.maxmind.com/en/correction -> /en/geoip-data-correction-request - www.maxmind.com/en/support -> support.maxmind.com/knowledge-base - www.maxmind.com/en/geoip2-anonymous-ip-database -> /en/geoip-anonymous-ip-database - www.maxmind.com/en/my_license_key (404) -> /en/accounts/current/license-key - www.maxmind.com/ -> /en/home Historical HISTORY.rst entries are intentionally left unchanged. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add missing 'v' prefix to action pin version comments (ref-version-mismatch). - Disable uv caching in the release workflow (cache-poisoning); dependency caching is unnecessary for one-off release builds. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Validates all links in the repo with lychee and updates those that were out of date or redirected elsewhere. Also adds a lychee config and a Links CI workflow so link rot is caught automatically going forward (on push, PR, and weekly).
The link checker uses
max_redirects = 0, so any link that has moved is surfaced and updated to the canonical destination it resolves to.Links updated
dev.maxmind.com/geoip/docs/{web-services,databases}?lang=en→ canonical trailing-slash formgeoip2.readthedocs.org/→geoip2.readthedocs.io/en/latest/www.maxmind.com/en/correction→www.maxmind.com/en/geoip-data-correction-requestwww.maxmind.com/en/support→support.maxmind.com/knowledge-basewww.maxmind.com/en/geoip2-anonymous-ip-database→www.maxmind.com/en/geoip-anonymous-ip-databasewww.maxmind.com/en/my_license_key(was a 404) →www.maxmind.com/en/accounts/current/license-keywww.maxmind.com/→www.maxmind.com/en/homeHistorical
HISTORY.rstentries are intentionally left unchanged.Part of STF-557.
🤖 Generated with Claude Code